/*
*    UNIVERSIDADE DE SÃO PAULO.
*    Author: Marco Aurélio Gerosa (gerosa@ime.usp.br)
*    This project was/is sponsored by RNP and FAPESP.
*
*    This file is part of Groupware Workbench (http://www.groupwareworkbench.org.br).
*
*    Groupware Workbench is free software: you can redistribute it and/or modify
*    it under the terms of the GNU Lesser General Public License as published by
*    the Free Software Foundation, either version 3 of the License, or
*    (at your option) any later version.
*
*    Groupware Workbench is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU Lesser General Public License for more details.
*
*    You should have received a copy of the GNU Lesser General Public License
*    along with Swift.  If not, see <http://www.gnu.org/licenses/>.
*/
package br.org.groupwareworkbench.aun.news;

import br.org.groupwareworkbench.core.framework.Collablet;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

public class CopyFromAUN {

    private Date lerData(ResultSet rs, String nomeCampo) {
        try {
            return rs.getTime(nomeCampo);
        } catch (SQLException e) {
            return null;
        }
    }

    public void copyFromAUN(Collablet collablet, int maxMaterias) {
        System.out.println("Inicio DA COPIA DA AUN!");

        ConnectionMysql con = null;
        Connection dbCon = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;

        try {
            con = new ConnectionMysql();
            dbCon = con.getConnection();
            stmt = dbCon.prepareStatement("SELECT * FROM materia");
            rs = stmt.executeQuery();

            for (int i = 0; rs.next() && (maxMaterias == -1 || i < maxMaterias); i++) {
                String titulo = rs.getString("titulo");
                String codMateria = rs.getString("cod_materia");

                if (titulo.isEmpty()) {
                    System.out.println("Pulei a matéria " + codMateria + " pois ela não tinha titulo.");
                    continue;
                } else if (News.findByTitle(titulo, collablet) != null) {
                    System.out.println("Pulei a matéria " + codMateria + " com o título \"" + titulo + "\" pois já existe uma matéria com este título.");
                    continue;
                }

                News materia = new News();
                String subtitulo = rs.getString("sub_titulo");
                String corpo = rs.getString("corpo");
                // corpo = (corpo.substring(34)).replaceAll("<+[A-Za-z0-9._%+-/\\\"\'= ]+>", " ");
                String lead = rs.getString("lead");
                String categoria = rs.getString("categoria");
                String relevancia = rs.getString("relevancia");
                String status = rs.getString("status");
                Date dataFecha = lerData(rs, "data_fecha");
                Date dataEnvia = lerData(rs, "data_envia");
                Date dataPublica = lerData(rs, "data_publica");

                materia.setCodNews(codMateria);
                materia.setTitle(titulo);
                materia.setSubTitle(subtitulo);
                materia.setBody(corpo);
                materia.setLead(lead);
                materia.setCategory(categoria);
                materia.setRelevance(relevancia);
                materia.setStatus(status);
                materia.setCloseDate(dataFecha);
                materia.setSendDate(dataEnvia);
                materia.setPublishDate(dataPublica);
                materia.setCollablet(collablet);
                materia.save();
            }
            System.out.println("Fim da cópia da AUN.");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("O Banco de Dados original não foi copiado, verifique sua conexão!");
        } finally {
            try {
                if (rs != null) rs.close();
            } catch (SQLException e) {
                // TODO
                e.printStackTrace();
            }
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException e) {
                // TODO
                e.printStackTrace();
            }
            try {
                if (dbCon != null) dbCon.close();
            } catch (SQLException e) {
                // TODO
                e.printStackTrace();
            }
            try {
                if (con != null) con.close();
            } catch (SQLException e) {
                // TODO
                e.printStackTrace();
            }
        }
    }
}
